延續上一篇,接著我們要來講Package啦!
Package就是所謂的模組,我們可以引用別人的模組也可以自己寫一個模組出來,而上一篇介紹的catkin
工具可以輕易的在我們的workspace中建立package,其語法如下:
catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
其中package_name
就是我們自定義的模組名稱啦!後面的depend1, 2, 3
則是可以在建立該模組時先預設好其相依的模組,是不是很方便呢! 就讓我們來實作看看吧~
首先進入我們上次建立好的workspace中,並將package建立在src資料夾底下:
$ cd catkin_ws/src
$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
就這樣,我們建好了一個名為beginner_tutorials
的package,其後的std_msgs
、rospy
和roscpp
則是其相依的模組,分別跟ROS的資料型別、python和c++語法有關。
建好package後,就會發現在本來的src底下,多了一個beginner_tutorials
的資料夾,其檔案結構會長得像這樣:
catkin_ws/ -- WORKSPACE
src/ -- SOURCE SPACE
CMakeLists.txt -- 'Toplevel' CMake file, provided by catkin
beginner_tutorials/
CMakeLists.txt -- CMakeLists.txt file for beginner_tutorials
package.xml -- Package manifest for beginner_tutorials
include/
src/
在beginner_tutorials
資料夾底下有四個檔案,其中include/
和src/
是給我們放標頭檔和實作檔用的,CMakeLists.txt
是給cmake建檔用的,而package.xml
就是上一篇檔案系統所提到的manifest囉!
點進去package.xml
可以看到裡面就是一些跟此package相關的資訊,例如版本號、功能描述、作者資訊等等,方便其他人如果想要使用這個package,看這個xml檔就可以了解這個package在做什麼了。而在這個xml檔底下,也有列出此package用了哪些相依模組,因此如果在初始化的時候漏加了那些模組,只要到這個xml檔底下新增就可以囉!
建立完package後,回到上一層的資料夾再執行一次catkin_make
,可以看到在建置的時候新增了beginner_tutorials
這個package囉!
最後為了未來方便操作,將這個workspace放入環境變數中,之後只要使用roscd
就可以快速進入該工作區囉!
$ echo "source /home/user/catkin_ws/devel/setup.bash" >> ~/.bashrc
ROS Package std_msgs
ROS Package roscpp
ROS Package rospy
ROS 在已建立的package中新增相依模組